package conservare.modelo;

import java.io.Serializable;

import javax.persistence.Embeddable;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

@Embeddable
public class Endereco implements Serializable{

	
	private static final long serialVersionUID = 581572592160761981L;
	
	@ManyToOne
	@JoinColumn(name="tipo_lograd_id")
	private TipoLogradouro tipoLogradouro;
	
	private String logradouro;
	private Integer numero;
	private String complemento;
	private String bairro;
	private String municipio;
	
	@ManyToOne
	@JoinColumn(name="sigla_uf")
	private UnidadeFederativa uf;
	
	private String cep;
	
	public TipoLogradouro getTipoLogradouro() {
		return tipoLogradouro;
	}
	public void setTipoLogradouro(TipoLogradouro tipoLogradouro) {
		this.tipoLogradouro = tipoLogradouro;
	}
	public String getLogradouro() {
		return logradouro;
	}
	public void setLogradouro(String logradouro) {
		this.logradouro = logradouro;
	}
	public Integer getNumero() {
		return numero;
	}
	public void setNumero(Integer numero) {
		this.numero = numero;
	}
	public String getComplemento() {
		return complemento;
	}
	public void setComplemento(String complemento) {
		this.complemento = complemento;
	}
	public String getBairro() {
		return bairro;
	}
	public void setBairro(String bairro) {
		this.bairro = bairro;
	}
	public String getMunicipio() {
		return municipio;
	}
	public void setMunicipio(String municipio) {
		this.municipio = municipio;
	}
	public UnidadeFederativa getUf() {
		return uf;
	}
	public void setUf(UnidadeFederativa uf) {
		this.uf = uf;
	}
	public String getCep() {
		return cep;
	}
	public void setCep(String cep) {
		this.cep = cep;
	}

	public String getCepFormatado(){
		if(getCep() != null && !getCep().isEmpty() && getCep().length() == 8){
			return getCep().substring(0,5) + "-" + getCep().substring(5);
		}else{
			return getCep();
		}
	}
	
	public String getEnderecoCompletoFormatadoParaUmaLinha(){
		
		return tipoLogradouro.getDescricao() + " " +
		logradouro + ", " +
		numero + " - " +
		getBairro() + " " +
		getCepFormatado() +	" " +
		getMunicipio() + "-" +
		getUf().getSiglaUF();
		
	}
	
	
	@Override
	public String toString() {
		return this.tipoLogradouro.getDescricao() + " " + this.logradouro + ", " + this.numero +
		(this.complemento ==  null ? "" : " - " + this.complemento) + "\tBairro: " + this.bairro + "\nCidade: " + this.municipio + "/" + this.uf.getNomeUF() + "\nCEP: " + this.cep;
	}
	
}
